perm filename ARMUS[SYS,HE]5 blob sn#032865 filedate 1973-03-30 generic text, type T, neo UTF8
00100	START:	MOVE P,[XWD -PDLL,UPDL]
00200		PUSHJ P,GAIN
00300		OUTSTR[ASCIZ/!
00400	/]
00500	WAIT:	WRCV EXE
00600		HLRZ 5,EXE
00700		CAIE 5,MASTER
00800		JRST[	MOVEI 3,VERSN
00900			JRST FINISH]
01000	WAITED:	MOVE 1,SEGJOB
01100		HRRZM 1,JOB
01200		HLRZM 1,SEG
01300	IFN REPORT+TRACK,<
01400		MOVE 1,[IOWD  DBL-100,DATO]
01500		MOVEM 1,DATPT			;DATA POINTER
01600		MOVEM 1,DATIWD			;OUTPUT POINTER
01700	>
01800		SETZB 3,TRAJER
01900		MOVEI 0,0
02000		LDB 1,[POINT 3,EXE,35]
02100		CAIG 1,1
02200		JRST READ
02300	IFE ARMWORK,<
02400		MOVEI 3,NOTHER
02500		JRST FINISH
02600	>
02700	IFN REPORT+TRACK,<		;WRITE OUT DATA
02800		INIT 15,17
02900		SIXBIT /DSK/
03000		0
03100		JRST NDM
03200		MOVE 2,FILE
03300		MOVEM 2,DFILE
03400		MOVE 2,PPPN
03500		MOVEM 2,DPPPN
03600	IFN TRACK,<
03700		SKIPE WALK
03800		JRST[	LOOKUP 15,DFILE
03900			JRST NDMS
04000			MOVE 2,[IOWD DBL,DATO]
04100			MOVEM 2,DATPT
04200			INPUT 15,1
04300			JRST EXFN]
04400	>
04500		ENTER 15,DFILE
04600		JRST[NDMS:MOVEI 3,NODATA
04700			SUB 17,[XWD 1,1]
04800			JRST FINISH]
04900	>
05000	EXFN:	CAIN 1,3
05100		JRST[	MOVE 4,EXE
05200			TRNN 4,HOLDF
05300			JRST [	SKIPE ARGS
05400				SOS JUMPBK
05500				JRST MOVON]
05600			SOS 1,STKPTR
05700			MOVEI 2,(1)
05800			LDB 3,[POINT 9,EXE,26]
05900			SUBI 1,(3)
06000			HRLI 1,ARGS
06100			BLT 1,(2)
06200			TRNE 4,RELOCF
06300			JRST[	MOVE 1,STKPTR
06400				SUBI 1,(3)
06500				SUB 1,CBUFS
06600				HRRM 1,@STKPTR
06700				JRST BPTR]
06800		BPTR:	SOS STKPTR
06900		MOVON:	SETOM FUNCT
07000			JRST SSW]
07100		CAIE 1,2
07200		JRST[	MOVEI 3,INVMES
07300			JRST FINISH]
07400		SETZM FUNCT
07500		HRREI 2,BUF-1001
07600		MOVEM 2,CBUFS
07700		SETOM BUF
07800		SETZM DOING	;TRAJECTORY SET UP FOR
     

00100		SKIPE BAND
00200		JRST[	MOVEI 1,BUF
00300			MOVEM 1,GOODIE
00400			MOVEI 1,1001
00500			MOVEM 1,GOODIE+1
00600			SETZM GOODIE+2
00700			MOVE 14,BAND
00800			UFBRD 14,GOODIE
00900			JRST RE
01000			SKIPN BUF+1000
01100			JRST[	SETZM BLOCKS
01200				MOVEI 1,BUF2
01300				MOVEM 1,NXTBUF
01400				SETZM @NXTBUF
01500				JRST ZDTH]
01600			MOVEI 1,BUF2
01700			MOVEM 1,GOODIE
01800			MOVEI 1,20
01900			MOVEM 1,GOODIE+2
02000			UFBRD 14,GOODIE
02100			JRST RE
02200			MOVEI 1,=74
02300			SKIPN BUF2+1000
02400			MOVEI 1,0
02500			MOVEM 1,BLOCKS
02600			MOVEI 1,40
02700			MOVEM 1,GOODIE+2
02800			MOVEI 1,BUF
02900			MOVEM 1,NXTBUF
03000			MOVNS BUF2
03100			JRST ZDTH]
     

00100		MOVE 1,FILE
00200		MOVEM 1,LFILE
00300		MOVE 1,PPPN
00400		MOVEM 1,LPPPN
00500		INIT 16,17
00600		SIXBIT/DSK/
00700		XWD 0,0
00800		JRST[NDM:	MOVEI 3,NODEV
00900				JRST FINISH]
01000		LOOKUP 16,LFILE
01100		JRST[		MOVEI 3,NOFILE
01200				JRST FINISH]
01300		MOVS 1,LPPPN		;FILE LENGTH
01400		MOVN 1,1
01500		ASH 1,-11
01600		MOVEM 1,BLOCKS
01700		SOSGE BLOCKS
01800		JRST FINISH
01900		MOVE 10,[IOWD 1000,BUF]
02000		SETZ 11,
02100		IN 16,10
02200		JRST[	SOSGE BLOCKS
02300			JRST[	MOVEI 1,BUF2
02400				MOVEM 1,NXTBUF
02500				SETZM @NXTBUF
02600				JRST ZDTH]
02700			ADDI 10,1001
02800			IN 16,10
02900			JRST[	MOVEI 1,BUF
03000				MOVEM 1,NXTBUF
03100				MOVNS BUF2
03200				JRST ZDTH]
03300			JRST RE]
03400		JRST RE
     

00100	ZDTH:
00200		MOVE 1,[XWD DELTH,DELTH+1]
00300		SETZM DELTH
00400		BLT 1,DELTH+5
00500		MOVEI 1,=60
00600		MOVEM 1,STWT
00700		MOVNS BUF
00800	SSW:	
00825	IFE USER+TRACK,<LOCK 1,>
00850		PUSHJ P,SPACE
00900	WWS:
01000	IFE REPORT+TRACK<
01100	IFE USER<
01200		MOVEI 1,1
01300		CALLI 1,31
01400	>
01500	>
01600		MOVE BITSAV
01700		TRNE DTST
01800		JRST BACK
01900		MOVE 1,@NXTBUF
02000		JUMPGE 1,.+2			;MORE TRAJECTORY TO COME
02100		JRST[	SOSGE BLOCKS
02200			JRST[	SETZM @NXTBUF	;ALL DONE MAKK THIS AS LAST
02300				RELEASE 16,
02400				JRST WDO]
02500			SKIPE BAND
02600			JRST[	MOVE 1,NXTBUF
02700				MOVEM 1,GOODIE
02800				UFBRD 14,GOODIE
02900				JRST RBD
03000				MOVE 1,NXTBUF
03100				SKIPN 1000(1)
03200				SETZM BLOCKS
03300				MOVEI 1,20
03400				ADDM 1,GOODIE+2
03500				JRST ROK]
03600			MOVE 10,NXTBUF
03700			SOJ 10,
03800			HRLI 10,-1000
03900			IN 16,10
04000			JRST[ROK:MOVE 1,NXTBUF
04100				MOVNS (1)
04200				ADDI 1,1001
04300				CAILE 1,BUF2
04400				MOVEI 1,BUF
04500				MOVEM 1,NXTBUF
04600				JRST WDO]
04700		RBD:	MOVE 1,NXTBUF		;READ ERROR
04800			SETZM @NXTBUF		;MARK AS LAST
04900		WFF:	MOVE BITSAV		;AND WAIT FOR IT TO END
05000			TRNN DTST
05100			JRST WFF
05200		RE:	MOVEI 3,REAERR
05300			JRST BACK]
05400	WDO:
05500	IFE REPORT+TRACK,<
05600		IFE USER,<JRST WWS>
05700		IFN USER,<JRST SSW>
05800	>
05900	IFN TRACK,<
06000		SKIPE WALK
06100		JRST SSW
06200	>
06300	IFN REPORT+TRACK,<
06400		HRRZ 1,DATIWD		;START TO WRITE
06500		CAIL 1,DATO+DBL-1
06600		JRST DOD
06700		HRRZ 2,DATPT		;LAST LOC FILLED
06800	WA:	SUBI 2,(1)
06900		JUMPL 2,[MOVEI 2,DATO+DBL-1
07000		JRST WA]
07100		TRZ 2,177
07200		JUMPN 2,[	MOVN 1,2	;MORE THAN 200 WORDS SO WRITE IT OUT
07300				HRLM 1,DATIWD	;NEG WORD COUNT
07400				OUT 15,DATIWD
07500				HRRZ 1,DATIWD
07600				ADDI 1,(2)
07700				HRRM 1,DATIWD
07800				JRST DOD]
07900	DOD:
08000		IFE USER,<JRST WWS>
08100		IFN USER,<JRST SSW>
08200	>
     

00100	BACK:	
00125	IFE USER+TRACK,<UNLOCK 1,>
00150		SPCWAR 636367
00200		MOVEI 0,0
00300		SKIPE 3,TRAJER
00400		JRST[	IFE DEB,<
00500			IFN TRACK,<SKIPN WALK>
00600				TRO RONLY
00700				MOVEM BITSAV
00800				MOVEI 1,1
00900				CALLI 1,31
01000			DRSW:	PUSHJ P,SPACE
01100			DRR:	MOVE BITSAV
01200				TRNN DTST
01300			IFE USER,<JRST DRR>
01400			IFN USER,<JRST DRSW>
01500				SPCWAR 636367
01600				MOVEI 0,0
01700				PUSHJ P,SETSET
01800	>
01900				JRST NOERR]
02000	NOERR:	IFE USER,<RELEASE 17,
02100	>
02200		IFN REPORT+TRACK,<
02300		PUSHJ P,CLODAT
02400		CLOSE 15,
02500		>
02600		SKIPN SEG
02700		JRST[	MOVEM 3,STATUS
02800			MOVE 2,[XWD TH,THETA]
02900			BLT 2,THETA+6
03000			MOVE 2,[XWD TORE,ARGS+10]
03100			BLT 2,ARGS+15
03200			MOVE 1,JOB
03300			MOVEM 1,REPLY
03400			SEND REPLY
03500			JRST WAIT
03600			JRST WAIT]
03700		MOVE 2,SEG
03800		CALLI 2,400016
03900		JRST WAIT
04000		HRRZ 4,NAME
04100		MOVE 2,(4)
04200		HLRZ 4,NAME
04300		MOVEM 2,(4)
04400		PUSHJ P,[SETNAM:MOVE 2,THETA
04500		MOVEI 4,6(2)
04600		HRLI 2,TH
04700		IFN TRACK,<SKIPN WALK>
04800		BLT 2,(4)
04900		MOVE 2,ETOR
05000		MOVEI 4,6(2)
05100		HRLI 2,TORE
05200		BLT 2,(4)
05300		PUSHJ P,SETFLT
05400		MOVEM 3,@STATUS
05500		MOVE 4,DOING
05600		MOVEM 4,@SEGMENT
05700		HRRZ 2,NAME
05800		SETZM (2)
05900		HRLZI 2,40
06000		MOVEM 2,IBIT
06100		INTUUO 4,JOB
06200		JUMP
06300		MOVEI 2,0
06310		CORE2 2,
06320		JFCL
06400		POPJ P,]
06500		JRST WAIT
     

00100	IFN REPORT+TRACK,<
00200	CLODAT:IFN TRACK,<
00300		SKIPE WALK
00400		POPJ P,
00500	>
00600	NWI:	HRRZ 1,DATIWD
00700		HRRZ 2,DATPT
00800		SUBI 2,(1)
00900		JUMPL 2,[	HRRZI 2,DATO+DBL-1
01000				SUBI 2,(1)
01100				MOVN 2,2
01200				HRLM 2,DATIWD
01300				SKIPE 2
01400				OUT 15,DATIWD
01500				MOVEI 2,DATO-1
01600				HRRM 2,DATIWD
01700				JRST NWI]
01800		ADDI 2,200
01900		TRZ 2,177
02000		MOVN 1,2
02100		HRLM 1,DATIWD
02200		OUT 15,DATIWD
02300		POPJ P,
02400	>
02500	
     

00100	READ:	SETZM STWT
00200		SKIPG 1
00300		TRO  POTREAD
00400		TRO RONLY
00500	RSW:	PUSHJ P,SPACE
00600	RSWW:	MOVE BITSAV
00700		TRNN  DTST
00800	IFE USER,<JRST RSWW>
00900	IFN USER,<JRST RSW>
01000		MOVE 3,TRAJER
01100		PUSHJ P,SETSET
01200		JRST FINISH
01300	
     

00100	SPACE:	MOVEI 1,=180
00200		MOVEM 1,COUNT
00300		TRO TRIP
00400		LDB 1,[POINT 1,EXE,32]
00500		MOVEM 1,SOTCHS
00600		JUMPE 1,.+2
00700		TRO STCH
00800	IFN DEB,<SETZM ETIM>
00900		MOVEM BITSAV
01000	IFE USER,<
01100	IFN TRACK,<
01200		SKIPE WALK
01300		JRST[	MOVEM 17,USAVE+17
01400			MOVEM 17,USAVE+17
01500			MOVEI 17,USAVE
01600			BLT 17,USAVE+16
01700			JSR STRADR-1
01800			HRLZI 17,USAVE
01900			BLT 17,16
02000			MOVE 17,USAVE+17
02100			POPJ P,]
02200	>
02300	IFE USER,<
02400	GETAD:	INIT 17,417
02500		SIXBIT /AD/
02600		XWD 0,0
02700		JRST GETAD
02800	>
02900		
03000		SPCWAR 1,STRADR
03100	>
03200	IFN USER,<
03300		MOVEM 17,USAVE+17
03400		MOVEI 17,USAVE
03500		BLT 17,USAVE+16
03600		JSR STRADR-1
03700		HRLZI 17,USAVE
03800		BLT 17,16
03900		MOVE 17,USAVE+17
04000	>
04100		POPJ P,
04200	
04300	UPDL:	FINISH
04400		BLOCK PDLL
04500	
04600	IFN USER+TRACK,<
04700	USAVE:	BLOCK 20
04800	>
04900	IFN TRACK,<WALK:0>
05000	
05100	IFN REPORT+TRACK,<
05200	DFILE:	0
05300		SIXBIT/TMP/
05400		0
05500	DPPPN:	0
05600	>
05700	LFILE:	0
05800		SIXBIT/TRJ/
05900		0
06000	LPPPN:	0
06100	
06200	GOODIE:	BLOCK 3
     

00100	FINISH:	SPCWAR 636367
00200	IFE USER,<RELEASE 17,
00300	>
00400		SKIPE SEG
00500		JRST [ATSEG:	MOVE 1,SEG
00600				CALLI 1,400016
00700				JRST WAIT
00800				PUSHJ P,SETNAM
00900				JRST WAIT]
01000		MOVEM 3,STATUS
01100		MOVE 1,[XWD TH,THETA]
01200		BLT 1,THETA+6
01300		MOVE 1,JOB
01400		MOVEM 1,REPLY
01500		SKIPN 1
01600		JRST WAITED
01700		SEND REPLY
01800		JRST WAIT
01900		JRST WAIT
02000	
02100	REPLY:	0
02200		EXE
02300	SEG:	0
02400	SOTCH:	0
02500	JOB:	0
02600	IBIT:	000040000000
02700	TICKS:	0
     

00100	SETFLT:	SKIPN NERVES
00200		POPJ P,
00300		MOVEI 6,1
00400		MOVE 4,NERVES
00500	STL:	MOVE 5,OBS(6)
00600		MOVEM 5,(4)
00700		ADDI 4,=16
00800		SOJGE 6,STL
00900		POPJ P,
01000	
01100		XLIST
01200		SUBTTL	SPACEWAR CODE	CONTROL			LOU PAUL
01300		LIST